package offer;

import java.util.Arrays;

/**
 * @author ZhanBo
 * @date 2020/6/7
 */
public class Solution66 {

    public static void main(String[] args) {
        int [] arrary = {1,2,3,4,5};
        constructArr(arrary);
       // System.out.println(Arrays.toString(constructArr(arrary)));
    }

    /**
     *面试题66. 构建乘积数组
     * 给定一个数组 A[0,1,…,n-1]，请构建一个数组 B[0,1,…,n-1]，
     * 其中 B 中的元素 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。
     *
     * 输入: [1,2,3,4,5]
     * 输出: [120,60,40,30,24]
     *
     * @param a
     * @return
     */
    public static int[] constructArr(int[] a) {
        int k = 1;
        int [] result = new int[a.length];
        //每一位都乘左边的
        for (int i = 0 ; i < a.length ; i++){
            result[i] = k;
            k = k * a[i];
        }
        k = 1;
        //每一位都乘右边的
        for (int j = a.length -1 ; j >=0 ;j--){
            result[j] = result[j]*k;
            k = k * a[j];
        }
        return result;
    }
}
